// src/handlers/uplink.rs

use crate::db::Database;
use crate::handlers::DeviceParams;
use std::sync::Arc;
use tokio::sync::Mutex;

pub async fn handle_uplink(params: DeviceParams, db: &Arc<Mutex<Database>>) -> Result<(), String> {
    let db = db.lock().await;
    let device = db.get_device(&params.dev_eui).map_err(|e| format!("数据库错误: {}", e))?;
    
    if let Some(device) = device {
        if device.app_eui == params.app_eui {
            println!("设备 {} 已经存在", params.dev_eui);
            println!("处理上行消息: {:?}", params.app_eui);
            // 在这里添加处理上行消息的逻辑，例如解密和处理数据
        } else {
            println!("设备 {} 的 AppEUI 不匹配", params.dev_eui);
        }
        Ok(())
    } else {
        Err("设备未注册".to_string())
    }
}
